package com.lcx.movie.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.lcx.movie.entity.Movie;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/** 
 * @Description  
 * @version 1.0 
 * @author lcx
 * @date 2025/2/9 11:25
 */
@Mapper
public interface MovieMapper extends BaseMapper<Movie> {
    /**
     * 根据电影id查询电影
     * @param movieId 电影id
     * @return 电影实体
     */
    Movie findMovieById(Long movieId);

    /**
     * 根据电影评分进行查询
     * @param searchMovie 搜索电影
     * @return 电影集合
     */
    List<Movie> sortMovieByCount(@Param("searchMovie")String searchMovie);

    /**
     * 根据时间进行查询电影
     * @param searchMovie 搜索电影
     * @return 电影集合
     */
    List<Movie> sortMovieByDate(@Param("searchMovie")String searchMovie);

    /**
     * 根据评分进行查询电影
     * @param searchMovie 搜索电影名
     * @return 电影集合
     */
    List<Movie> sortMovieByScore(@Param("searchMovie")String searchMovie);
    /**
     * 分页条件查询电影列表
     * @param movieCnName 电影名称
     * @return 电影集合
     */
    public List<Movie> selectPageByMovieCnName(@Param("movieCnName") String movieCnName,@Param("cinemaId") Integer cinemaId);

    /**
     * 根据电影id删除电影
     * @param movieId 电影id
     * @return 受影响的行数
     */
    public int deleteMovieByMovieId(@Param("movieId") int movieId);

    /**
     * 查询所有电影
     * @return 电影集合
     */
    public List<Movie> selectMovies();

    /**
     * 新增电影
     *
     * @param movie 电影实体
     * @return 收影响的行数
     */
    public int insertMovie(Movie movie);

    /**
     * 根据电影id查出电影对象
     * @param movieId 电影id
     * @return 电影对象
     */
    List<Movie> selectMovieByMovieId(@Param("movieId") Integer movieId);

    /**
     * 修改电影信息
     * @param movie 电影对象
     * @return 受影响的行数
     */
    public int updateMovie(Movie movie);

    /**
     * 单独修改电影的海报
     * @param movie 电影实体
     * @return 受影响的行数
     */
    public int updateMovieImg(Movie movie);

    /**
     * 修改电影评分:根据用户评分以及评分人数进行计算
     * @return 受影响的行数
     */
    public int updateMovieScore();

    /**
     * 根据类型，地区，年份 分类查询电影
     * @param movieType 电影类型
     * @param movieCountry 电影地区
     * @param movieReleaseDate 年份
     * @return 电影集合
     */
    public List<Movie> getMoviesByType(@Param("movie_type") String movieType,@Param("movie_country") String movieCountry,@Param("movie_releaseDate") String movieReleaseDate);

    /**
     * 根据电影时间状态判断是：正在热映，即将上映和经典影片
     * @param status 状态
     * @return 电影集合
     */
    public List<Movie> getMoviesByStatus(@Param("status") String status);

    /**
     * top榜单 根据电影评分来排序
     * @return 电影集合
     */
    public List<Movie> getMovieScore();

    /**
     * 分页模糊查询平台电影管理
     * @param movieCnName 电影名
     * @return 电影集合
     */
    public List<Movie>selectMoviePage(@Param("movieCnName")String movieCnName,@Param("movieState") Integer movieState);

    /**
     * 根据电影id修改电影状态
     * @param movieId 电影id
     * @return 受影响的行数
     */
    public int updateMovieState(@Param("movieId") Integer movieId);

}